An application program (“application”) is a computer program that performs a specific task. A distributed application is one that executes on two or more different computer systems more or less simultaneously. Such simultaneous activity is typically coordinated via communications between these computer systems, generally via a network.
One example of a distributed application is Usenet, an application enabling large number of users to participate in conversations on specific topics. These topical discussions, called newsgroups, are comprised of textual messages. A user of the Usenet application executes a client portion of the Usenet application, called a news client or a newsreader, on the user's computer system. The news client communicates with a news server program executing on one of a large number of news server computer systems using a protocol called NNTP (Network News Transfer Protocol) in order to perform such functions as retrieving a list of newsgroups, retrieving a list of the messages in a particular newsgroup, retrieving a particular message to be displayed to the user, or posting to a newsgroup a message authored by the user.
Because messages received by the news server executing on a particular news server computer system are forwarded to most or all of the other news servers, comparable sets of messages are available on many or all of the available news servers. Typically the user configures the news client to contact the news server on a particular news server computer system by supplying the Internet address—or “IP (Internet Protocol) address”—of that news server computer system. The news client, thus configured, contacts this particular news server each time it needs to contact a news server to complete a task.
Unfortunately, for such client/server applications, the user often selects a server that is sub-optimal at the time of its selection, or that becomes sub-optimal at some future time. For example, a user may select a first news server that has a typical response time of 2 seconds, rather than a second news server unknown to the user that has a typical response time of 0.05 seconds. Similarly, a user that weeks ago selected the second news server may not manually switch to the first news server when a partial network failure raises the average response time of the second news server to 5.5 seconds.
Further, the protocols relied upon by many distributed applications to communicate between portions of the application executing on different computer systems fail to incorporate or otherwise accommodate such services as encryption and compression. Further, the few such protocols that do incorporate services such as encryption and compression incorporate particular variations of these services (e.g., 56-bit DES encryption), and make it difficult to utilize others instead (e.g., 128-bit DES encryption).
In view of the foregoing, an improved approach to facilitating the exchange of data by distributed applications that successfully automated the selection of a server, and/or that permitted the use of various different data processing techniques such as encryption and compression, would have significant utility.